package com.totoro.mall.mall_buyer.service;

import com.totoro.mall.mall_buyer.dto.CartDTO;
import com.totoro.mall.mall_buyer.exception.SellException;
import com.totoro.mall.mall_buyer.model.ProductInfo;
import org.springframework.data.domain.Page;

import java.awt.print.Pageable;
import java.util.List;

/**
 * 商品
 * Created by Niki on 2018/4/12 7:57
 */
public interface IProductInfoService {
    ProductInfo findOne(String productId);

    /**
     * 查询所有在架的商品
     * @return
     */
    List<ProductInfo> findUpAll();

    Page<ProductInfo> findUpAll(Pageable pageable);

    /**
     * 新增商品
     * @param product
     * @return
     */
    ProductInfo save(ProductInfo product);

    /**
     * 加库存
     * 由于加库存可能在用户取消订单的时候，而订单中的商品都是从购物车开始
     * @param cartDTOS
     */
    void increaseStock(List<CartDTO> cartDTOS) throws SellException;

    /**
     * 减库存
     * 由于加库存可能在用户取消订单的时候，而订单中的商品都是从购物车开始
     * @param cartDTOS
     */
    void decreaseStock(List<CartDTO> cartDTOS) throws SellException;

    /**
     * 上架
     *
     * @param productId
     * @return
     */
    ProductInfo onSale(String productId) throws SellException;

    /**
     * 下架
     * @param productId
     * @return
     */
    ProductInfo offSale(String productId) throws SellException;

}
